<?php

/**
 * UserIdentity represents the data needed to identity a user.
 * It contains the authentication method that checks if the provided
 * data can identity the user.
 */
class UserIdentity extends CUserIdentity
{
    private $_id; 
    private $_admin; 
	private $_username; 
	/**
	 * Authenticates a user.
	 * The example implementation makes sure if the username and password
	 * are both 'demo'.
	 * In practical applications, this should be changed to authenticate
	 * against some persistent user identity storage (e.g. database).
	 * @return boolean whether authentication succeeds.
	 */
	public function authenticate()
	{
		$admin = Admin::model()->find("username=:username" , array(":username"=>$this->username));
        if(empty($admin))
            $this->errorCode=self::ERROR_USERNAME_INVALID;
        elseif($admin->password !== md5($this->password.Yii::app()->params['private_key']))
            $this->errorCode=self::ERROR_PASSWORD_INVALID;
        else
            $this->errorCode=self::ERROR_NONE;
        // echo self::ERROR_USERNAME_INVALID;
        // echo self::ERROR_PASSWORD_INVALID;
        // echo self::ERROR_NONE;
        // echo $this->errorCode;
        // exit;
        if(!$this->errorCode){
            $this->_id = $admin->id;
            $this->_admin = true;
            $this->_username = $admin->username;
            $this->setState('admin', true); 
            $this->setState('username', $admin->username); 
            return !$this->errorCode;
        }

        $user = User::model()->find("username=:username" , array(":username"=>$this->username));

        if(empty($user))
            $this->errorCode=self::ERROR_USERNAME_INVALID;
        elseif($user->author==0)
            $this->errorCode=self::ERROR_USERNAME_INVALID;
        elseif($user->password !== md5($this->password.Yii::app()->params['private_key']))
            $this->errorCode=self::ERROR_PASSWORD_INVALID;
        else
            $this->errorCode=self::ERROR_NONE;

        if(!$this->errorCode){ 
            $this->_id = $user->id;
            $this->_admin = false;
            $this->_username = $user->username;
            $this->setState('admin', false); 
            $this->setState('username', $user->username); 
        }
        return !$this->errorCode;
	}


    /**
     * 返回用户的id 
     * @return id
     * @author 
     **/ 
    public function getId()
    {
        return $this->_id;
    }

    /**
     * 设置用户的id 
     *
     * @return void
     * @author 
     **/  
    public function setId($id){
        $this->_id = $id;
    }
   
   /**
     * 设置用户的id 
     *
     * @return void
     * @author 
     **/  
    public function getAdmin(){
        return $this->_admin;
    }
}